package persistencia.entidades;

import java.sql.Date;
import java.util.List;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.validation.constraints.NotNull;

/**
 * Entidade.
 * 
 * @author Maciel Melo
 * @since 09/11/2013
 * @see macielmelo.eti.br
 */
@SuppressWarnings("javadoc")
@Entity(name = "paciente")
public class Paciente {
	@Id
	@SequenceGenerator(sequenceName = "public.seq_paciente", name = "seq_paciente", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_paciente")
	private Long id;
	@NotNull
	private String nome;
	@NotNull
	private Date nascimento;
	@NotNull
	private char sexo;
	@NotNull
	private String profissao;
	private String convenio;
	@Column(name = "nome_mae")
	private String nomeMae;
	@Column(name = "status_ativo")
	private Boolean ativo;

	// -----------------------------Relacionamento--------------------------//
	@OneToMany(mappedBy = "paciente")
	private List<Endereco> endereco;

	@OneToMany(mappedBy = "paciente")
	private List<Contato> contato;

	@ManyToMany
	private Set<Patologia> patologia;

	@OneToOne(mappedBy = "paciente")
	private Historico historico;

	@OneToMany(mappedBy = "paciente")
	private List<Agenda> agendas;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getNascimento() {
		return nascimento;
	}

	public void setNascimento(Date nascimento) {
		this.nascimento = nascimento;
	}

	public char getSexo() {
		return sexo;
	}

	public void setSexo(char sexo) {
		this.sexo = sexo;
	}

	public String getProfissao() {
		return profissao;
	}

	public void setProfissao(String profissao) {
		this.profissao = profissao;
	}

	public String getConvenio() {
		return convenio;
	}

	public void setConvenio(String convenio) {
		this.convenio = convenio;
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) {
		this.nomeMae = nomeMae;
	}

	public List<Endereco> getEndereco() {
		return endereco;
	}

	public void setEndereco(List<Endereco> endereco) {
		this.endereco = endereco;
	}

	public List<Contato> getContato() {
		return contato;
	}

	public void setContato(List<Contato> contato) {
		this.contato = contato;
	}

	public Set<Patologia> getPatologia() {
		return patologia;
	}

	public void setPatologia(Set<Patologia> patologia) {
		this.patologia = patologia;
	}

	public Historico getHistorico() {
		return historico;
	}

	public void setHistorico(Historico historico) {
		this.historico = historico;
	}

	public List<Agenda> getAgendas() {
		return agendas;
	}

	public void setAgendas(List<Agenda> agendas) {
		this.agendas = agendas;
	}

}
